iT邦幫忙

2021 iThome 鐵人賽

DAY 27
0

最小權限原則 principle of least privilege

指的是使用的帳號應該要跟服務所需要的權限相符合。

如若部屬 Web 服務則使用 www-data 或 apache 等帳號,而非管理員的帳號直接部屬;針對資料庫,若網站只會使用到一個資料庫/表,那該資料庫帳號可以只限制於那個資料庫中。

為什麼要提權

當我們發現打進目標機器之後,可能只有 www-data 或是一般使用者的權限,你必須要找到更高的權限才能得到你想要的敏感資料,如必須要從一般職員到主管,才能拿到更多資料,因此透過提權的手法,可以讓自己提升權限。

常見的提權範例

  • 以管理員的身分(root、administrator)執行容易被攻擊的軟體
  • 已知漏洞的作業系統核心(kernel)
  • 目標網站、系統中的錯誤設定
  • 檔案與服務權限控管失敗
  • 敏感資料儲存於本地未進行加密或其他防禦機制
  • hardcode 將帳號密碼寫死在程式碼中
  • 訪問 Windows SAM 資料取的 hash 雜湊值
  • DLL Hijacking
  • 針對 Windows 中,設定不安全的註冊表內容
  • 惡意軟體

複習

我們曾經介紹過以下的工具取得目標權限

  1. netcat
  2. socat
  3. Metasploit - multi/handler
  4. Msfvenom
  5. webshell
  6. 其他程式語言/指令

Linux 相關提權

提升權限方式:水平提權、垂直提權

水平提權:可以控制其他相同權限使用者
垂直提權:可以控制更高權限的使用者

提權流程

  1. 收集資訊:了解 Linux 版本、SUID 檔案(可能可以寫入或利用)、Crontab(計畫執行的檔案)
  2. 利用檔案:找到可以利用的檔案之後,確認權限以及如何利用(檔案權限控管、環境變數、執行檔本身的特性)
  3. 進行提權

前置知識-SUID

當我們執行 ls -al 列出當前資料夾內部的檔案,並以長列表顯示,並包含所有檔案(含隱藏檔案)。

-rwxr-xr-x feifei
第一個 - 代表檔案/d 代表資料夾

可以看到這個檔案的權限是 777,如下表 顯示

user     group     others

rwx       rwx       rwx

421       421       421

r = read
w = write
x = execute

有三個比較特別的權限在於,今天如果想要以一個「一般使用者」的身分,執行 root 寫的備份檔案,若以一般使用者權限則無法執行。

因此透過 set 權限,讓一般使用者可以執行原本無權限的檔案。

分成三種
SUID: 檔案如果在執行的階段,檔案的執行身分為檔案所有者的權限(rwsrwxrwx)
SGID: 檔案如果在執行的階段,檔案的執行身分為檔案群組的權限(rwxrwsrwx)
Sticky Bit: 希望檔案可寫入,但不能刪除

搜尋 SUID
find / -perm -u=s -type f 2>/dev/null

首要目標:收集資訊

透過收集資訊可以了解目標系統正在執行哪些服務,並透過什麼權限執行。

以下是針對 Linux 作業系統可以蒐集的資訊:

作業系統 kernel 相關

指令 說明
cat /etc/issue 查看作業系統
cat /proc/version 查看核心版本
hostname 查看主機名稱
uname -a 查看系統資訊

可針對 Kernel 版本後蒐集攻擊腳本。
searchsploit linux kernel 3.9

作業系統
cat /etc/issue

kernel版本
cat /proc/version

主機名稱
hostname

系統資訊
uname -a

使用者 相關

指令 說明
cat /etc/passwd 查看系統使用者
id 確認目前的使用者 id
who 查看目前正在執行的使用者
w 顯示目前登入使用者相關資訊
sudo -l 如果你是 sudo group 可查看目前可執行的指令

網路 相關

指令 說明
ifconfig -a 網路介面卡
route 路由表
netstat -antup 連線到終端
arp -e ARP table

執行中的 process 相關

指令 說明
ps aux 目前執行的 process
dpkg -l Debian 使用
rpm -qa Fedora 使用

ps aux | grep root
如果要提權就要針對以 root 或其他高權限正在執行的 process 下手

找特殊檔案

  1. 找設定檔案,看看有沒有設定錯誤的設定檔。
    ls -ls /etc/ | grep .conf
  2. 找網站相關檔案
    ls -ls /var/www/html/
  3. 找 SUID
    find /* -user root -perm -4000 -print 2>/dev/null

找文件檔案

找文件系統
cat /etc/fstab

找環境變數

cat /etc/profile
cat /etc/bashrc
cat ~/.bash_profile
cat ~/.bashrc
cat ~/.bash_logout
env
set

是否有 ssh 私鑰

cat ~/.ssh/id_rsa.pub
cat ~/.ssh/id_rsa

使用自動腳本搜尋可利用的漏洞

  1. 節省時間
  2. 仰賴已知漏洞資料庫,如果沒有定期更新可能導致無法發現最近的漏洞
  3. 可能找不到手動檢測才會發現的漏洞
  4. 只能協助檢測

自動腳本-LinPEAS(Linux Privilege Escalation Awesome Script)

  1. 下載腳本
    wget https://raw.githubusercontent.com/carlospolop/privilege-escalation-awesome-scripts-suite/master/linPEAS/linpeas.sh
  2. 執行腳本
    ./linpeas.sh

自動腳本 linuxprivchecker

  1. 下載腳本
    wget http://www.securitysift.com/download/linuxprivchecker.py
  2. 執行腳本
    python linuxprivchecker.py

自動腳本 Unix-privesc-check v1.4

  1. 下載腳本
    http://pentestmonkey.net/tools/audit/unix-privesc-check
  2. 執行腳本
    ./unix-privesc-check standard
  3. 取得詳細報告
    ./unix-privesc-check detailed

上一篇
Day26 - 針對 Metasploitable 3 進行滲透測試(7) - 利用 Meterpreter 後滲透
下一篇
Day28 - Linux 編譯 POC/exploit
系列文
資安這條路─系統化學習滲透測試37
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言